<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // then 的返还值：一、onResolved 的返还值 二、onRejected的返还值
      let p = new Promise((resolve, reject) => {
        resolve("success");
      });

      // 一、成功之后，then的返还值

      let result = p.then(
        (res) => {
          // 1.没有任何返还
          // 2.返还普通值
          // return "hello";
          // 3. 返还一个promise对象；
          return new Promise((resolve, reject) => {
            // resolve("返还的成功promise");
            reject("失败状态的promise对象");
          });
          // 4.抛出一个错误
          throw new Error("错误了");
        },
        (err) => {
          // return 111;
        }
      );

      // console.log(result); // 是then 成功之后的返还结果

      result.then(
        (res) => {
          console.log("成功了", res);
        },
        (err) => {
          console.log("失败了", err);
        }
      );

      /*
      1. 如果onResolved 没有任何返还，那么 result的值是
                      fulfilled 状态的 promise 且结果值是 undefined;
      2. 如果返还一个普通值：
                      得到一个fulfilled状态的promise对象 且结果是 返还的普通值
      3. 返还一个promise对象
                      得到返还的promise对象。
      4. 抛出一个错误 得到一个失败状态的promise对象
                          得到一个失败状态的promise对象，结果值是错误的内容
      // 总结：无论如何 then的调用都会得到一个promise对象，then之后可以继续调用then
      */
    </script>
  </body>
</html>
